package com.demo.behavioral.memento;

/**
 * 备忘录模式
 * 所谓备忘录模式就是在不破坏封装的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态，这样可以在以后将对象恢复到原先保存的状态。
 * 应用场景
 * 实现方法：新建一个原始对象，但该对象包含获取本对象的备份对象、恢复为备份对象的方法；Memento备忘录对象，是需要被保存待重新恢复的对象，
 * 基本上就是原始对象去掉全部方法后的javabean；备忘录管理对象，负责保存好各种类的备忘录，这里一次只能保存一个类的备份。
 * @author allen
 *
 */
public class Test {
	
	public static void main(String[] args) {
		//例如游戏当中，一个角色失血过多，则需要重新满血，初始化到原来的角色
		GameRole gameRole =new GameRole(); 
		gameRole.setPower(80);
		gameRole.setAggressivity(50);
		gameRole.show(); 
		//备份该对象
		MementoManager mementoManager = new MementoManager();
		mementoManager.setMemento(gameRole.getGameRoleMemento());
		//对该对象更新
		gameRole.fightBoss();
		//对象已经发生变化
		gameRole.show();
		//恢复对象
		gameRole = gameRole.getGameRole(mementoManager.getMemento());
		gameRole.show(); 
	}

}
